# include<stdio.h>
# include<mysql/mysql.h>
# include"cgi_base.h"//直接把query_string和body里面的数据读到缓冲区里面

int main()
{
  //0、获取query_string
  char buf[1024*4]={0};
  if(GetQueryString(buf)<0){
    fprintf(stderr,"GetQueryString failed\n");
    return 1;
  }
  //约定客户端传过来的参数是：id=123&name=haha
  int id=0;
  char name[1024]={0};
  sscanf(buf,"id=%d&name=%s",&id,name);
  fprintf(stderr,"[CGI] id=%d,name=%s\n",id,name);
  /*接下来就要进行数据库的查找，直接
   * 把数据库中所有的数据都一股脑查出来
   mysql使用的一般思路：
   1、连接到数据库
   2、拼接sql语句
   3、把sql语句发送到服务器
   4、读取并遍历服务器返回的结果
   5、断开连接*/
//1、连接到数据库，定义mysql结构体指针，相当于一个句柄
   MYSQL *connect_fd=mysql_init(NULL);//有了一个空遥控器
   MYSQL * connect_ret=mysql_real_connect(connect_fd,"127.0.0.1",
       "root","123456","TestDb",3306,NULL,0);//连接数据库（拿遥控器和数据库进行配对）
   //127.0.0.1环回IP，可填对应机器的IP地址和端口号;第三个参数为用户名
   //第四个参数为密码；第五个参数为需要访问的数据库名字；第六个参数端口号，
   //端口号默认为3306，可以自己进行配置
   if(connect_ret==NULL){
     fprintf(stderr,"mysql connect failed\n");
     //连接失败：数据库IP地址或者用户名，数据库名不对……
     return 1;
   }
   fprintf(stderr,"mysql connect ok!\n");
   //2、拼装sql语句,组织命令
   char sql[1024*4]={0};
   sprintf(sql,"insert into TestTable values(%d,'%s')",id,name);
   //3、把sql语句发送到服务器上
   //使用遥控器把命令发送给服务器
   int ret=mysql_query(connect_fd,sql);
   if(ret<0){
     fprintf(stderr,"mysql_query failed!%s\n",sql);
   }
   //4、向客户端反馈插入成功、失败的结果
   if(ret==0)
   printf("<html><h1>插入成功</h1></html>");
   else 
   printf("<html><h1>插入失败</h1></html>");
     
   //5、断开链接（mysql服务器也害怕句柄泄漏）
   mysql_close(connect_fd);
   return 0;
}
